#ifndef APPLICATION_HPP_
#define APPLICATION_HPP_

#include <SFML/System.hpp>
#include <SFML/Graphics.hpp>

#include "console.hpp"
#include "script.hpp"
#include "game/game.hpp"
#include "game/game_server.hpp"
#include "runtime_info/run_time_info_bar.hpp"

namespace lge2d
{

class Application
{
public:
	Application();
	void Initialize();
	void StartGameLoop();
	virtual ~Application();

private:
	Application(const Application&);
	Application& operator= (const Application&);

	sf::Clock m_frame_clock;
	sf::Font m_system_default_font;
	sf::RenderWindow m_window;
	sf::Image m_icon;
	Script m_script;
	lge2d::Console m_console;
	lge2d::RunTimeInfoBar m_info_bar;
	ps::PixelShooterGame m_game;
	ps::lan::PixelShooterGameServer m_game_server;
};

} /* namespace lge2d */
#endif /* APPLICATION_HPP_ */
